<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
         // 1. -------------------- async ------------------------
    // async 用于修饰函数，也就是放到函数前面
    // async 函数，如果返回一个值，相当于返回了一个Promise对象，resolve(值)

    // 示例代码：
    async function abc() {
      return '任何内容'
      return Promise.reject('失败状态的')
    }
    // 相当于
    // async function abc() {
    //   return new Promise((resolve, reject) => {
    //     resolve(123)
    //   })
    // }

    // 测试
    let p = abc()
    // p.then(res => {
    //   console.log('成功', res)
    // }).catch(err => {
    //   console.log('失败', err)
    // })


    // ---------------------- await --------------------
    // await 要配合async来使用
    // 【如果函数中出现 await、那么在离await最近的那个函数前面加 async】
    // 【await会暂停函数的执行，也就是await下面的代码都是异步的】
    async function fn() {
      console.log(1)
      let res = await p
      console.log(3)
      console.log(4)
      console.log(5)
    }
    fn()
    console.log(2)
    </script>
</body>
</html>